

#ifndef ACCOUNT_H
#define ACCOUNT_H

#include <stdint.h>
#include "BalanceType.h"

class Account
{
  public:

    enum AccountType { CHECKING_ACCOUNT, SAVINGS_ACCOUNT } ;

    Account( const uint32_t id, const AccountType type, const int32_t StartingBalance );
    Account( const Account & ) ; // copy constructor

    ~Account();


    inline BalanceType & GetBalance (){ return( mBalance ); }    
    inline uint32_t      GetId      (){ return( mAccountId ); } 
    inline AccountType   GetType    (){ return( mType ); } 

    bool WithDrawal( const double amount );
    BalanceType & Deposit( const double amount );

  private:
    BalanceType  mBalance ; // avoid arithmetic errors, make all currency an integer
    AccountType  mType ;
    uint32_t     mAccountId ;
    
    Account () ; // Cant call default constructor ;
};

#endif
